package edu.scau.system.domain;

import java.util.Date;

import java.io.Serializable;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * 用户表(User)实体类
 *
 * @author hwh
 * @since 2025-03-15 17:38:16
 */

@Tag(name = "用户表", description = "用户表 domain")
@Data
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @Schema(name = "userId", description = "用户ID", type = "Long")
    private Long userId;

    @Schema(name = "userName", description = "用户账号", type = "String")
    private String userName;

    @Schema(name = "nickName", description = "用户昵称", type = "String")
    private String nickName;

    @Schema(name = "phone", description = "手机号码", type = "String")
    private String phone;

    @Schema(name = "avatar", description = "头像地址", type = "String")
    private String avatar;

    @Schema(name = "password", description = "密码", type = "String")
    private String password;

    @Schema(name = "status", description = "状态", type = "String")
    private String status;

    @Schema(name = "delFlag", description = "删除标志", type = "String")
    private String delFlag;

    @Schema(name = "createBy", description = "创建者", type = "String")
    private String createBy;

    @Schema(name = "createTime", description = "创建时间", type = "Date")
    private Date createTime;

    @Schema(name = "updateBy", description = "更新者", type = "String")
    private String updateBy;

    @Schema(name = "updateTime", description = "更新时间", type = "Date")
    private Date updateTime;
    @Schema(name = "roleIds", description = "用户权限ID", type = "[]")
    private Long[] roleIds;
    @Schema(name = "roles", description = "用户权限", type = "[]")
    private List<Role> roles;

    public User() {
    }

    public User( Long userId,   String userName,   String nickName,   String phone,   String avatar,   String password,   String status,   String delFlag,   String createBy,   Date createTime,   String updateBy,   Date updateTime ) {
        this.userId = userId;
        this.userName = userName;
        this.nickName = nickName;
        this.phone = phone;
        this.avatar = avatar;
        this.password = password;
        this.status = status;
        this.delFlag = delFlag;
        this.createBy = createBy;
        this.createTime = createTime;
        this.updateBy = updateBy;
        this.updateTime = updateTime;
    }
}
